package br.com.vti.sisp_sicrim.antigo.controller.relatorios;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.Idclc001;
import br.com.vti.sisp_sicrim.antigo.model.SicControle;
import br.com.vti.sisp_sicrim.antigo.model.SicTabelas;
import br.com.vti.sisp_sicrim.antigo.model.Sisldat8;
import br.com.vti.sisp_sicrim.antigo.model.Sisll001;
import br.com.vti.sisp_sicrim.antigo.model.Tablele;
import br.com.vti.sisp_sicrim.antigo.util.Relatorios;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;

/**
 * Classe responsavel por encapsular o tratamento e as consistencias da tela
 * Idcpc007Report
 * 
 * @author Incode - Data: mai/2014
 * 
 */
public class Idcpc007Report {
	private String nomeClasse;
	private int[][] jViasDia = new int[13][5];
	private String jDescrTot;
	private String sdatx;
	private int jPosto;
	private String jDescrPosto;
	private int jDataI;
	private int jDataF;
	public int datini;
	public int datfim;
	private int[] jEmissao = new int[13];
	private String nroPagina;
	private int[] jViasPosto = new int[5];
	private String horaCorrente;
	private Result result;
	private Sessao sessao;
	private Relatorios report;
	// Classes views
	SicControle vwDvecon = new SicControle();
	SicTabelas vwTabele = new SicTabelas();
	// Classes includes
	Idclc001 idclc001 = new Idclc001();
	Sisldat8 sisldat8 = new Sisldat8();
	Sisll001 sisll001 = new Sisll001();
	Tablele tablele = new Tablele();

	public Idcpc007Report() throws JRException {
		inicializar();
	}

	public Idcpc007Report(Sessao sessao) throws JRException {
		this.sessao = sessao;
		inicializar();
	}

	public void inicializar() throws JRException {
		report = new Relatorios();
		Arrays.fill(jEmissao, 0);
		Arrays.fill(jViasDia, 0);
		jDescrTot = "";
		Arrays.fill(jViasPosto, 0);
		jPosto = 0;
		jDescrPosto = "";
		jDataI = 0;
		jDataF = 0;
		nomeClasse = this.getClass().getSimpleName(); // *PROGRAM
		sdatx = new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()); // *DATX
		horaCorrente = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()); // *TIMX
		report.setNumeroRel(1, "C");
		{
			report.setNumeroLinhaRel(1, 4);
			{
				report.adicionaCampo(1, 43, "lit_1_43", "C", "", "SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA");
				report.adicionaCampo(66, 7, "lit_66_7", "C", "", "PAGINA:");
				report.adicionaCampo(74, 5, "nroPagina", "S", "ZZZ.Z99", "");
				report.adicionaCampo(80, 29, "lit_80_29", "C", "", "MODULO DE IDENTIFICACAO CIVIL");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 5);
			{
				report.adicionaCampo(48, 5, "lit_48_5", "C", "", "HORA:");
				report.adicionaCampo(54, 8, "horaCorrente", "S", "DD/MM/YYYY", "");
				report.adicionaCampo(64, 5, "lit_64_5", "C", "", "DATA:");
				report.adicionaCampo(70, 10, "sdatx", "S", "DD/MM/YYYY", "");
				report.adicionaCampo(81, 44, "lit_81_44", "C", "", "EMISSAO DE CARTEIRAS DE IDENTIDADE POR POSTO");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(3, 1);
			{
				report.adicionaCampo(61, 19, "lit_61_19", "C", "", "RELATORIO: IDCPC007");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(4, 4);
			{
				report.adicionaCampo(1, 6, "lit_1_6", "C", "", "POSTO:");
				report.adicionaCampo(8, 4, "Jposto", "N", "ZZZ9", "");
				report.adicionaCampo(13, 1, "lit_13_1", "C", "", "-");
				report.adicionaCampo(15, 50, "Jdescrposto", "X", "ZZZ9", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(5, 4);
			{
				report.adicionaCampo(22, 8, "lit_22_8", "C", "", "PERIODO:");
				report.adicionaCampo(31, 8, "Jdatai", "N", "99/99/9999", "");
				report.adicionaCampo(40, 3, "lit_40_3", "C", "", " A ");
				report.adicionaCampo(44, 8, "Jdataf", "N", "99/99/9999", "");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(7, 2);
			{
				report.adicionaCampo(6, 59, "lit_6_59", "C", "", "--EMISSAO-    1A. VIA     2A. VIA     2A. C/ALTER.    TOTAL");
				report.adicionaCampo(66, 1, "lit_66_1", "C", "", "-");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(2, "D");
		{
			report.setNumeroLinhaRel(1, 1);
			{
				report.adicionaCampo(1, 1, "lit_1_1", "C", "", "-");
				report.setFimLinhaRel();
			}
			report.setNumeroLinhaRel(2, 5);
			{
				report.adicionaCampo(3, 15, "Jdescrtot", "X", "", "");
				report.adicionaCampo(19, 6, "Jviasposto[1]", "N", "ZZZ.ZZ9", "");
				report.adicionaCampo(31, 6, "Jviasposto[2]", "N", "ZZZ.ZZ9", "");
				report.adicionaCampo(43, 6, "Jviasposto[3]", "N", "ZZZ.ZZ9", "");
				report.adicionaCampo(58, 6, "Jviasposto[4]", "N", "ZZZ.ZZ9", "");
				report.setFimLinhaRel();
			}
		}
		report.setNumeroRel(3, "D");
		{
			report.setNumeroLinhaRel(1, 5);
			{
				report.adicionaCampo(7, 8, "Jemissao[1]", "N", "99/99/9999", "");
				report.adicionaCampo(19, 6, "Jviasdia[1][1]", "N", "ZZZ.ZZ9", "");
				report.adicionaCampo(31, 6, "Jviasdia[1][2]", "N", "ZZZ.ZZ9", "");
				report.adicionaCampo(43, 6, "Jviasdia[1][3]", "N", "ZZZ.ZZ9", "");
				report.adicionaCampo(58, 6, "Jviasdia[1][4]", "N", "ZZZ.ZZ9", "");
				report.setFimLinhaRel();
			}
		}
	}

	public boolean validar() {
		return true;
	}

	public int[][] getJviasdia() {
		return jViasDia;
	}

	public void setJviasdia(int[][] jViasDia) throws ParseException {
		this.jViasDia = jViasDia;
		report.adicionaValorReport("Jviasdia", jViasDia);
	}
	public void setJviasdia(int index1, int index2, int jViasDia) throws ParseException {
		this.jViasDia[index1][index2] = jViasDia;
		report.adicionaValorReport("Jviasdia"+"["+String.valueOf(index1)+"]"+"["+String.valueOf(index2)+"]", jViasDia);
	}

	public String getJdescrtot() {
		return jDescrTot;
	}

	public void setJdescrtot(String jDescrTot) throws ParseException {
		this.jDescrTot = jDescrTot;
		report.adicionaValorReport("Jdescrtot", jDescrTot);
	}

	public int getJposto() {
		return jPosto;
	}

	public void setJposto(int jPosto) throws ParseException {
		this.jPosto = jPosto;
		report.adicionaValorReport("Jposto", jPosto);
	}

	public String getJdescrposto() {
		return jDescrPosto;
	}

	public void setJdescrposto(String jDescrPosto) throws ParseException {
		this.jDescrPosto = jDescrPosto;
		report.adicionaValorReport("Jdescrposto", jDescrPosto);
	}

	public int getJdatai() {
		return jDataI;
	}

	public void setJdatai(int jDataI) throws ParseException {
		this.jDataI = jDataI;
		report.adicionaValorReport("Jdatai", jDataI);
	}

	public int getJdataf() {
		return jDataF;
	}

	public void setJdataf(int jDataF) throws ParseException {
		this.jDataF = jDataF;
		report.adicionaValorReport("Jdataf", jDataF);
	}

	public int[] getJemissao() {
		return jEmissao;
	}

	public void setJemissao(int[] jEmissao) throws ParseException {
		this.jEmissao = jEmissao;
		report.adicionaValorReport("Jemissao", jEmissao);
	}

	public int[] getJviasposto() {
		return jViasPosto;
	}

	public void setJviasposto(int[] jViasPosto) throws ParseException {
		this.jViasPosto = jViasPosto;
		report.adicionaValorReport("Jviasposto", jViasPosto);
	}

	public int getJemissao(int index) {
		return jEmissao[index];
	}

	public void setJemissao(int index, int jEmissao) throws ParseException {
		this.jEmissao[index] = jEmissao;
		report.adicionaValorReport("Jemissao"+"["+String.valueOf(index)+"]", jEmissao);
	}

	public int getJviasposto(int index) {
		return jViasPosto[index];
	}

	public void setJviasposto(int index, int jViasPosto) throws ParseException {
		this.jViasPosto[index] = jViasPosto;
		report.adicionaValorReport("Jviasposto"+"["+String.valueOf(index)+"]", jViasPosto);
	}

	public String getNomeClasse() {
		return nomeClasse;
	}

	public void setNomeClasse(String nomeClasse) throws ParseException {
		this.nomeClasse = nomeClasse;
		report.adicionaValorReport("nomeClasse", nomeClasse);
	}

	public String getNroPagina() {
		return nroPagina;
	}

	public void setNroPagina(String nroPagina) throws ParseException {
		this.nroPagina = nroPagina;
		report.adicionaValorReport("nroPagina", nroPagina);
	}

	public String getSdatx() {
		return sdatx;
	}

	public void setSdatx(String sdatx) throws ParseException {
		this.sdatx = sdatx;
		report.adicionaValorReport("Sdatx", sdatx);
	}

	public String getHoraCorrente() {
		return horaCorrente;
	}

	public void setHoraCorrente(String horaCorrente) throws ParseException {
		this.horaCorrente = horaCorrente;
		report.adicionaValorReport("horaCorrente", horaCorrente);
	}

	public void setPageSize(int pagesize) throws JRException {
		report.setPageSize(pagesize);
	}

	public void setLineSize(int linesize) {
		report.setLineSize(linesize);
	}

	public int getPageSize() {
		return report.getPageSize();
	}

	public int getPageLine() {
		return report.getPageLine();
	}

	public void saltaLinhas(int qtdLinhas) throws ParseException, JRException {
		report.saltaLinhas(qtdLinhas);
	}

	public void gravaRelatorio(int nroRel) throws ParseException, JRException {
		setNroPagina(String.valueOf(report.getPageNumber()));
		report.gravaRelatorio(report, nroRel, false);
	}

	public void imprimir() throws FileNotFoundException, JRException {
		report.imprimir();
	}

	public int getDatfim() {
		return datfim;
	}

	public void setDatfim(int datfim) throws ParseException {
		this.datfim = datfim;
		report.adicionaValorReport("Datfim", datfim);
	}

	public int getDatini() {
		return datini;
	}

	public void setDatini(int datini) throws ParseException {
		this.datini = datini;
		report.adicionaValorReport("Datini", datini);
	}

}
